package alo.p10;

/**
 * @ClassName CountingSort
 * @Description 计数排序
 * @Author Fanxc
 * @DATE 2021/3/12 10:27
 * @Version 1.0
 */
public class CountingSort {
    public void countingSort(int[] A,int n,int[] B,int K){
        int[] C=new int[K];
        //索引值的个数
        for (int j = 0; j < n; j++) {
            C[A[j]]=C[A[j]]+1;
        }
        //C[i]包含所有小于等于i的元素
        for (int i = 1; i <=K; i++) {
            C[i]=C[i]+C[i-1];
        }
        //把C[]的数据导入B[]中，B[]用于存放排序结果
        for (int j=n-1;j>=0;j--){
            B[C[A[j]]]=A[j];
            C[A[j]]=C[A[j]]-1;
        }
    }
}
